<?php

namespace App\Http\Controllers;

use App\Http\Requests\PasswordRequest;
use App\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *首页
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //获取全部数据
        //$user = User::get();
        //dd($user);
        //分页
        $user = User::paginate(10);
        //加载模板 分配变量
        return view('user.index',compact('user'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {

        //查询要编辑的id
        $user = User::find($id);

        //进入修改用户数据方法之后,应该先判断当前用户是否有权限,如果有权限,继续往下执行,如果没权限,直接停止()
        //第一个参数是调用的权限策略的方法名称
        //第二个参数是需要操作的用户数据对象
        $this->authorize('update',$user);
        //加载模板 分配变量
        return view('user.edit',compact('user'));

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id,PasswordRequest $passwordRequest)
    {
        //找到当前id对应的用户数据
        $user = User::find($id);
        //dd($user);
        //获取post数据
        $post = $request ->all();
        //dd($post);
        //修改用户名
        $user->name = $post['name'];
        //判断密码是否写入
        if ($post['password']){
            $user->password=bcrypt($post['password']);
        }
        //写入数据库
        $user->save();
        //设置闪存信息
        session()->flash('success','编辑成功');
        //跳转页面
        return redirect()->route('user.index');


    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //1.再摸板中设置删除
        //找到要删除的id编号
        $user = User::find($id);
        //dd($user);
        //设置权限
        $this->authorize('delete',$user);
        //执行删除
        User::destroy($id);
        //设置闪存信息
        session()->flash('success','删除成功');
        //跳转页面
        return redirect()->route('user.index');

    }
}
